home *** CD-ROM | disk | FTP | other *** search
/ Cracking 2 / Cracking II..iso / Priklady / Priklad 36 / DETECT36.ASM next >
Encoding:
Assembly Source File  |  2000-08-14  |  2.7 KB  |  83 lines

  1. .386
  2. .MODEL FLAT,STDCALL
  3. locals
  4. jumps
  5. UNICODE=0
  6. include w32.inc
  7.  
  8. Extrn SetUnhandledExceptionFilter : PROC
  9.  
  10. .data
  11.  
  12. sprava1        db "Anti-ProcDump trik",0
  13. sprava2        db "Zvadsil velkost suboru v jeho PE hlavicke",0
  14. odlozESP       dd 0                             ;sem uklada register ESP
  15. predchadzajuca dd 0                             ;sem uklada adresu predchadzajucej obsluhy SEH
  16.  
  17.  
  18. .code
  19.  
  20. Start:
  21.  
  22. ;----------------------------------------------------------------------------
  23. ;NASTAVI SEH PRE PRIPAD CHYBY
  24. ;----------------------------------------------------------------------------
  25.                 mov  [odlozESP],esp
  26.                 push offset chyba
  27.                 call SetUnhandledExceptionFilter
  28.                 mov  [predchadzajuca], eax
  29. ;----------------------------------------------------------------------------
  30.  
  31.  
  32.                 mov  eax,fs:[30h]               ;nacita verziu Windows
  33.  
  34.                 test eax,eax                    ;testuje verziu
  35.                 js   nasiel_win9x               ;ak je to Windows9x skoci
  36.  
  37.  
  38. nasiel_winNT:                                   ;tu je uvedeny postup pre WindowsNT
  39.  
  40.                 mov  eax,[eax+0ch]
  41.                 mov  eax,[eax+0ch]
  42.                 add  dword ptr [eax+20h], 3000h ;zvacsi velkost programu
  43.  
  44.                 jmp   koniec                                                    ;skok, hotovo
  45.  
  46.  
  47. nasiel_win9x:                                   ;tu je uvedeny postup pre Windows9x
  48.                 push 0
  49.                 call GetModuleHandleA           ;zisti rukovat modulu
  50.  
  51.                 test edx,edx
  52.                 jns  koniec                     ;ak nastala chyba skoci
  53.  
  54.                 cmp  dword ptr [edx+08], -1     ;testuje, ci je tam hodnota -1
  55.                 jne  koniec                     ;ak nie nastala chyba a skoci
  56.  
  57.                 mov  edx, [edx+4]               ;zisti adresu PE hlavicky suboru
  58.  
  59.                 add  dword ptr [edx+50h], 3000h ;zvacsi velkost tak, ze zmeni v PE hlavicke polozku SizeOfImage
  60.  
  61. koniec:
  62.  
  63. ;----------------------------------------------------------------------------
  64. ;NASTAVI PREDCHADZAJUCU OBSLUHU SEH
  65. ;----------------------------------------------------------------------------
  66.                 push dword ptr [predchadzajuca]
  67.                 call SetUnhandledExceptionFilter
  68. ;----------------------------------------------------------------------------
  69.  
  70.  continiue:
  71.                 call MessageBoxA,0, offset sprava2, offset sprava1,0
  72.                 call ExitProcess, -1
  73.  
  74.  
  75. chyba:                                          ;nova obsluha SEH pre pripad chyby
  76.  
  77.                 mov  esp, [odlozESP]
  78.                 push offset continiue
  79.                 ret
  80.  
  81. ends
  82. end Start
  83.